const fs = require('fs');
const http = require('http');

const server = http.createServer((req, res) => {
    const fileName = new URL(req.url, `http://${req.headers.host}`).searchParams.get('file');
    
    if (!fileName) {
        res.writeHead(400, { 'Content-Type': 'text/plain;charset=utf-8' });
        return res.end('请提供文件名参数');
    }

    // 使用fs.open, fs.read, fs.close读取文件
    fs.open(fileName, 'r', (err, fd) => {
        if (err) {
            res.writeHead(404, { 'Content-Type': 'text/plain;charset=utf-8' });
            res.end(`文件 ${fileName} 不存在`);
            return;
        }

        // 创建buffer来存储文件内容
        const buffer = Buffer.alloc(1024);
        fs.read(fd, buffer, 0, buffer.length, 0, (err, bytesRead) => {
            if (err) {
                res.writeHead(500, { 'Content-Type': 'text/plain;charset=utf-8' });
                res.end('读取文件时发生错误');
                return;
            }

            // 关闭文件
            fs.close(fd, (err) => {
                if (err) {
                    console.error('关闭文件时发生错误:', err);
                }
            });

            res.writeHead(200, { 'Content-Type': 'text/plain;charset=utf-8' });
            res.end(buffer.slice(0, bytesRead).toString());
        });
    });
});

server.listen(8081, () => {
    console.log('服务器运行在 http://localhost:8081');
});